package com.kuaiyin.util;

import lombok.extern.slf4j.Slf4j;
import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.util.JMeterUtils;

import java.io.File;

@Slf4j
public class JmeterUtil {
    /**
     * 获取jmeter的home目录
     *
     * @return
     */
    public static String getJmeterHome() {
        // 优先级1：检查环境变量
        String home = System.getenv("JMETER_HOME");
        // 优先级2：尝试默认路径（容器内挂载路径）
        if (home == null || home.trim().isEmpty()) {
            home = "/jmeter";  // 直接指定挂载路径
        }
        return home;
    }

    /**
     * 获取jmeter的bin目录
     *
     * @return
     */
    public static String getJmeterHomeBin() {
        return getJmeterHome() + File.separator + "bin";
    }

    /**
     * 初始化jmeter环境
     */
    public static void initJmeterProperties() {
        String jmeterHome = getJmeterHome();
        String jmeterHomeBin = getJmeterHomeBin();
        //加载jmeter配置文件
        JMeterUtils.loadJMeterProperties(jmeterHomeBin + File.separator + "jmeter.properties");
        //设置jmeter的home目录
        JMeterUtils.setJMeterHome(jmeterHome);
        //设置编码
        JMeterUtils.setProperty("sampleresult.default.encoding", "UTF-8");
        //初始化本地环境
        JMeterUtils.initLocale();


        // ⚠️ 关键：加载 saveservice.properties
        try {
            SaveService.loadProperties();
        } catch (Exception e) {
            throw new RuntimeException("加载 saveservice.properties 出错", e);
        }
    }

    /**
     * 获取jmeter引擎
     *
     * @return
     */
    public static StandardJMeterEngine getJMeterEngine() {
        initJmeterProperties();   //初始化jmeter环境
        return new StandardJMeterEngine();
    }
}
